import Storage from 'react-native-storage';

//var API_BASE_PATH = "http://192.168.0.103:8080/bb";
var API_BASE_PATH = "http://120.26.37.159:8080/bb";
var API_LOGIN_CHECK             = API_BASE_PATH + "/user/login?";       //家长登录申请
var API_GET_CHILDS              = API_BASE_PATH + "/user/childs?";      //获取所有孩子信息
var API_GET_EVENT               = API_BASE_PATH + "/event/get?";        //获取所有孩子的BB记录
var API_REGISTER                = API_BASE_PATH + "/user/register?";    //家长注册申请
var API_BINDING                 = API_BASE_PATH + "/user/bind?";        //家长绑定孩子申请
var API_GET_NOTICES             = API_BASE_PATH + "/publish/get?";      //获取学校公告列表
var API_GET_LEAVES_APPLIES      = API_BASE_PATH + "/leave/get?" ;       //获取请假申请
var API_APPLY_LEAVE             = API_BASE_PATH + "/leave/apply?" ;     //提交请假申请
var API_CHAT_ADDRESS_LIST       = API_BASE_PATH + "/chat/addresslist?"; //发送聊天信息
var API_CHAT_SEND_MSG           = API_BASE_PATH + "/chat/send?";        //发送聊天信息
var API_CHAT_READ_LATEST_NEW    = API_BASE_PATH + "/chat/readnew?";     //读取最新未读消息
var API_CHAT_READ_LATEST        = API_BASE_PATH + "/chat/readlatest?";  //读取最新20条消息（包括已读和未读，包括发送和接受）
var API_GET_COURSE              = API_BASE_PATH + "/course/get?";       //获取周几课程列表

var storage = new Storage({
  // 最大容量，默认值1000条数据循环存储
  size: 1000,    

  // 数据过期时间，默认一整天（1000 * 3600 * 24秒）
  defaultExpires: 1000 * 3600 * 24,

  // 读写时在内存中缓存数据。默认启用。
  enableCache: true,

  // 如果storage中没有相应数据，或数据已过期，
  // 则会调用相应的sync同步方法，无缝返回最新数据。
  sync : {
    // 同步方法的具体说明会在后文提到
  }
})

storage.sync = {
    course(params){
      let { id, resolve, reject } = params;
      var queryStr = API_GET_COURSE + 'id=' + encodeURIComponent(id);
      console.log("从服务器读取课程表:"+queryStr);
      fetch(queryStr)
            .then(response =>
                response.json())
            .then(json =>{
            	if(json && json.success === true && json.message){
            		storage.save({
            			key:'course',
            			id:id,
            			rawData:json.message,
            		});
            		resolve && resolve(json.message);
            	}
            	else{
            		reject && reject('data parse error');
            	}
            })
            .catch(error =>{
            	 console.warn(error);
                reject && reject(error);
            });
    }
  }  

// 最好在全局范围内创建一个（且只有一个）storage实例，方便直接调用

// 对于web
// window.storage = storage;

// 对于react native
global.storage = storage;

// 这样在之后的任意位置即可以直接调用storage